{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Modeling and Simulation in Python\n",
    "\n",
    "Case study: Spider-Man\n",
    "\n",
    "Copyright 2017 Allen Downey\n",
    "\n",
    "License: [Creative Commons Attribution 4.0 International](https://creativecommons.org/licenses/by/4.0)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Configure Jupyter so figures appear in the notebook\n",
    "%matplotlib inline\n",
    "\n",
    "# Configure Jupyter to display the assigned value after an assignment\n",
    "%config InteractiveShell.ast_node_interactivity='last_expr_or_assign'\n",
    "\n",
    "# import functions from the modsim.py module\n",
    "from modsim import *"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "I'll start by getting the units we'll need from Pint."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "radian"
      ],
      "text/latex": [
       "$\\mathrm{radian}$"
      ],
      "text/plain": [
       "<Unit('radian')>"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "m = UNITS.meter\n",
    "s = UNITS.second\n",
    "kg = UNITS.kilogram\n",
    "N = UNITS.newton\n",
    "degree = UNITS.degree\n",
    "radian = UNITS.radian"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Spider-Man"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In this case study we'll develop a model of Spider-Man swinging from a springy cable of webbing attached to the top of the Empire State Building.  Initially, Spider-Man is at the top of a nearby building, as shown in this diagram.\n",
    "\n",
    "![](diagrams/spiderman.png)\n",
    "\n",
    "The origin, `O⃗`, is at the base of the Empire State Building.  The vector `H⃗` represents the position where the webbing is attached to the building, relative to `O⃗`.  The vector `P⃗` is the position of Spider-Man relative to `O⃗`.  And `L⃗` is the vector from the attachment point to Spider-Man.\n",
    "\n",
    "By following the arrows from `O⃗`, along `H⃗`, and along `L⃗`, we can see that \n",
    "\n",
    "`H⃗ + L⃗ = P⃗`\n",
    "\n",
    "So we can compute `L⃗` like this:\n",
    "\n",
    "`L⃗ = P⃗ - H⃗`\n",
    "\n",
    "The goals of this case study are:\n",
    "\n",
    "1. Implement a model of this scenario to predict Spider-Man's trajectory.\n",
    "\n",
    "2. Choose the right time for Spider-Man to let go of the webbing in order to maximize the distance he travels before landing.\n",
    "\n",
    "3. Choose the best angle for Spider-Man to jump off the building, and let go of the webbing, to maximize range."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "I'll create a `Params` object to contain the quantities we'll need:\n",
    "\n",
    "1. According to [the Spider-Man Wiki](http://spiderman.wikia.com/wiki/Peter_Parker_%28Earth-616%29), Spider-Man weighs 76 kg.\n",
    "\n",
    "2. Let's assume his terminal velocity is 60 m/s.\n",
    "\n",
    "3. The length of the web is 100 m.\n",
    "\n",
    "4. The initial angle of the web is 45 degrees to the left of straight down.\n",
    "\n",
    "5. The spring constant of the web is 40 N / m when the cord is stretched, and 0 when it's compressed.\n",
    "\n",
    "Here's a `Params` object."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>values</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>height</th>\n",
       "      <td>381 meter</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>g</th>\n",
       "      <td>9.8 meter / second ** 2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mass</th>\n",
       "      <td>75 kilogram</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>area</th>\n",
       "      <td>1 meter ** 2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>rho</th>\n",
       "      <td>1.2 kilogram / meter ** 3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>v_term</th>\n",
       "      <td>60.0 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>length</th>\n",
       "      <td>100 meter</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>angle</th>\n",
       "      <td>225 degree</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>k</th>\n",
       "      <td>40.0 newton / meter</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>t_0</th>\n",
       "      <td>0 second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>t_end</th>\n",
       "      <td>30 second</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "height                    381 meter\n",
       "g           9.8 meter / second ** 2\n",
       "mass                    75 kilogram\n",
       "area                   1 meter ** 2\n",
       "rho       1.2 kilogram / meter ** 3\n",
       "v_term          60.0 meter / second\n",
       "length                    100 meter\n",
       "angle                    225 degree\n",
       "k               40.0 newton / meter\n",
       "t_0                        0 second\n",
       "t_end                     30 second\n",
       "dtype: object"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "params = Params(height = 381 * m,\n",
    "                g = 9.8 * m/s**2,\n",
    "                mass = 75 * kg,\n",
    "                area = 1 * m**2,\n",
    "                rho = 1.2 * kg/m**3,\n",
    "                v_term = 60 * m / s,\n",
    "                length = 100 * m,\n",
    "                angle = (270 - 45) * degree,\n",
    "                k = 40 * N / m,\n",
    "                t_0 = 0 * s,\n",
    "                t_end = 30 * s)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Compute the initial position"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def initial_condition(params):\n",
    "    \"\"\"Compute the initial position and velocity.\n",
    "    \n",
    "    params: Params object\n",
    "    \"\"\"\n",
    "    height, length, angle = params.height, params.length, params.angle\n",
    "    \n",
    "    H⃗ = Vector(0, height)\n",
    "    theta = angle.to(radian)\n",
    "    x, y = pol2cart(theta, length)\n",
    "    L⃗ = Vector(x, y)\n",
    "    P⃗ = H⃗ + L⃗\n",
    "    V⃗ = Vector(0, 0) * m/s\n",
    "    \n",
    "    return State(P⃗=P⃗, V⃗=V⃗)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>values</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>P⃗</th>\n",
       "      <td>[-70.71067811865477 meter, 310.28932188134524 ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>V⃗</th>\n",
       "      <td>[0.0 meter / second, 0.0 meter / second]</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "P⃗    [-70.71067811865477 meter, 310.28932188134524 ...\n",
       "V⃗             [0.0 meter / second, 0.0 meter / second]\n",
       "dtype: object"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "initial_condition(params)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now here's a version of `make_system` that takes a `Params` object as a parameter.\n",
    "\n",
    "`make_system` uses the given value of `v_term` to compute the drag coefficient `C_d`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "def make_system(params):\n",
    "    \"\"\"Makes a System object for the given conditions.\n",
    "    \n",
    "    params: Params object\n",
    "    \n",
    "    returns: System object\n",
    "    \"\"\"\n",
    "    init = initial_condition(params)\n",
    "    \n",
    "    mass, g = params.mass, params.g\n",
    "    rho, area, v_term = params.rho, params.area, params.v_term\n",
    "    C_d = 2 * mass * g / (rho * area * v_term**2)\n",
    "    \n",
    "    return System(params, init=init, C_d=C_d)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's make a `System`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>values</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>height</th>\n",
       "      <td>381 meter</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>g</th>\n",
       "      <td>9.8 meter / second ** 2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mass</th>\n",
       "      <td>75 kilogram</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>area</th>\n",
       "      <td>1 meter ** 2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>rho</th>\n",
       "      <td>1.2 kilogram / meter ** 3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>v_term</th>\n",
       "      <td>60.0 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>length</th>\n",
       "      <td>100 meter</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>angle</th>\n",
       "      <td>225 degree</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>k</th>\n",
       "      <td>40.0 newton / meter</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>t_0</th>\n",
       "      <td>0 second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>t_end</th>\n",
       "      <td>30 second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>init</th>\n",
       "      <td>P⃗    [-70.71067811865477 meter, 310.289321881...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C_d</th>\n",
       "      <td>0.3402777777777778 dimensionless</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "height                                            381 meter\n",
       "g                                   9.8 meter / second ** 2\n",
       "mass                                            75 kilogram\n",
       "area                                           1 meter ** 2\n",
       "rho                               1.2 kilogram / meter ** 3\n",
       "v_term                                  60.0 meter / second\n",
       "length                                            100 meter\n",
       "angle                                            225 degree\n",
       "k                                       40.0 newton / meter\n",
       "t_0                                                0 second\n",
       "t_end                                             30 second\n",
       "init      P⃗    [-70.71067811865477 meter, 310.289321881...\n",
       "C_d                        0.3402777777777778 dimensionless\n",
       "dtype: object"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "system = make_system(params)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>values</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>P⃗</th>\n",
       "      <td>[-70.71067811865477 meter, 310.28932188134524 ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>V⃗</th>\n",
       "      <td>[0.0 meter / second, 0.0 meter / second]</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "P⃗    [-70.71067811865477 meter, 310.28932188134524 ...\n",
       "V⃗             [0.0 meter / second, 0.0 meter / second]\n",
       "dtype: object"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "system.init"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Drag and spring forces\n",
    "\n",
    "Here's drag force, as we saw in Chapter 22."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "def drag_force(V⃗, system):\n",
    "    \"\"\"Compute drag force.\n",
    "    \n",
    "    V⃗: velocity Vector\n",
    "    system: `System` object\n",
    "    \n",
    "    returns: force Vector\n",
    "    \"\"\"\n",
    "    rho, C_d, area = system.rho, system.C_d, system.area\n",
    "    \n",
    "    mag = rho * V⃗.mag**2 * C_d * area / 2\n",
    "    direction = -V⃗.hat()\n",
    "    f_drag = direction * mag\n",
    "    return f_drag"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\\[\\begin{pmatrix}10.0 & 10.0\\end{pmatrix} meter/second\\]"
      ],
      "text/latex": [
       "$\\begin{pmatrix}10.0 & 10.0\\end{pmatrix}\\ \\frac{\\mathrm{meter}}{\\mathrm{second}}$"
      ],
      "text/plain": [
       "array([10., 10.]) <Unit('meter / second')>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "V⃗_test = Vector(10, 10) * m/s"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\\[\\begin{pmatrix}-28.873526898450695 & -28.873526898450695\\end{pmatrix} kilogram meter/second<sup>2</sup>\\]"
      ],
      "text/latex": [
       "$\\begin{pmatrix}-28.873526898450695 & -28.873526898450695\\end{pmatrix}\\ \\frac{\\mathrm{kilogram} \\cdot \\mathrm{meter}}{\\mathrm{second}^{2}}$"
      ],
      "text/plain": [
       "array([-28.8735269, -28.8735269]) <Unit('kilogram * meter / second ** 2')>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "drag_force(V⃗_test, system)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And here's the 2-D version of spring force.  We saw the 1-D version in Chapter 21."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "def spring_force(L⃗, system):\n",
    "    \"\"\"Compute drag force.\n",
    "    \n",
    "    L⃗: Vector representing the webbing\n",
    "    system: System object\n",
    "    \n",
    "    returns: force Vector\n",
    "    \"\"\"\n",
    "    extension = L⃗.mag - system.length\n",
    "    if magnitude(extension) < 0:\n",
    "        mag = 0\n",
    "    else:\n",
    "        mag = system.k * extension\n",
    "        \n",
    "    direction = -L⃗.hat()\n",
    "    f_spring = direction * mag\n",
    "    return f_spring"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\\[\\begin{pmatrix}0 & -101\\end{pmatrix} meter\\]"
      ],
      "text/latex": [
       "$\\begin{pmatrix}0 & -101\\end{pmatrix}\\ \\mathrm{meter}$"
      ],
      "text/plain": [
       "array([   0, -101]) <Unit('meter')>"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "L⃗_test = Vector(0, -system.length-1*m)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\\[\\begin{pmatrix}-0.0 & 40.0\\end{pmatrix} newton\\]"
      ],
      "text/latex": [
       "$\\begin{pmatrix}-0.0 & 40.0\\end{pmatrix}\\ \\mathrm{newton}$"
      ],
      "text/plain": [
       "array([-0., 40.]) <Unit('newton')>"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f_spring = spring_force(L⃗_test, system)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here's the slope function, including acceleration due to gravity, drag, and the spring force of the webbing."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "def slope_func(state, t, system):\n",
    "    \"\"\"Computes derivatives of the state variables.\n",
    "    \n",
    "    state: State (x, y, x velocity, y velocity)\n",
    "    t: time\n",
    "    system: System object with g, rho, C_d, area, mass\n",
    "    \n",
    "    returns: sequence (vx, vy, ax, ay)\n",
    "    \"\"\"\n",
    "    P⃗, V⃗ = state\n",
    "    g, mass = system.g, system.mass\n",
    "    \n",
    "    H⃗ = Vector(0, system.height)\n",
    "    L⃗ = P⃗ - H⃗\n",
    "    \n",
    "    a_grav = Vector(0, -g)\n",
    "    a_spring = spring_force(L⃗, system) / mass\n",
    "    a_drag = drag_force(V⃗, system) / mass\n",
    "    \n",
    "    A⃗ = a_grav + a_drag + a_spring\n",
    "    \n",
    "    return V⃗, A⃗"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As always, let's test the slope function with the initial conditions."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([0., 0.]) <Unit('meter / second')>,\n",
       " array([ 5.35924893e-15, -9.80000000e+00]) <Unit('meter / second ** 2')>)"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "slope_func(system.init, 0, system)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And then run the simulation."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>values</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>success</th>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>message</th>\n",
       "      <td>The solver successfully reached the end of the...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "success                                                 True\n",
       "message    The solver successfully reached the end of the...\n",
       "dtype: object"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "results, details = run_ode_solver(system, slope_func)\n",
    "details"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Visualizing the results\n",
    "\n",
    "We can extract the x and y components as `Series` objects."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The simplest way to visualize the results is to plot x and y as functions of time."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_position(P⃗):\n",
    "    x = P⃗.extract('x')\n",
    "    y = P⃗.extract('y')\n",
    "    plot(x, label='x')\n",
    "    plot(y, label='y')\n",
    "\n",
    "    decorate(xlabel='Time (s)',\n",
    "             ylabel='Position (m)')\n",
    "    \n",
    "plot_position(results.P⃗)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can plot the velocities the same way."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_velocity(V⃗):\n",
    "    vx = V⃗.extract('x')\n",
    "    vy = V⃗.extract('y')\n",
    "    plot(vx, label='vx')\n",
    "    plot(vy, label='vy')\n",
    "\n",
    "    decorate(xlabel='Time (s)',\n",
    "             ylabel='Velocity (m/s)')\n",
    "    \n",
    "plot_velocity(results.V⃗)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Another way to visualize the results is to plot y versus x.  The result is the trajectory through the plane of motion."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_trajectory(P⃗, **options):\n",
    "    x = P⃗.extract('x')\n",
    "    y = P⃗.extract('y')\n",
    "    plot(x, y, **options)\n",
    "    \n",
    "    decorate(xlabel='x position (m)',\n",
    "             ylabel='y position (m)')\n",
    "    \n",
    "plot_trajectory(results.P⃗, label='trajectory')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Letting go\n",
    "\n",
    "Now let's find the optimal time for Spider-Man to let go.  We have to run the simulation in two phases because the spring force changes abruptly when Spider-Man lets go, so we can't integrate through it.\n",
    "\n",
    "Here are the parameters for Phase 1, running for 9 seconds."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "params1 = Params(params, t_end=9*s)\n",
    "system1 = make_system(params1)\n",
    "results1, details1 = run_ode_solver(system1, slope_func)\n",
    "plot_trajectory(results1.P⃗, label='Phase 1')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The final conditions from Phase 1 are the initial conditions for Phase 2."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "8.999999999999991 second"
      ],
      "text/latex": [
       "$8.999999999999991\\ \\mathrm{second}$"
      ],
      "text/plain": [
       "8.999999999999991 <Unit('second')>"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "t_final = get_last_label(results1) * s"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here's the position Vector."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\\[\\begin{pmatrix}42.09220704823149 & 273.0520143333356\\end{pmatrix} meter\\]"
      ],
      "text/latex": [
       "$\\begin{pmatrix}42.09220704823149 & 273.0520143333356\\end{pmatrix}\\ \\mathrm{meter}$"
      ],
      "text/plain": [
       "array([ 42.09220705, 273.05201433]) <Unit('meter')>"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "init = results1.last_row()\n",
    "init.P⃗"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And the velocity Vector."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\\[\\begin{pmatrix}14.625507683978038 & 7.937765075110924\\end{pmatrix} meter/second\\]"
      ],
      "text/latex": [
       "$\\begin{pmatrix}14.625507683978038 & 7.937765075110924\\end{pmatrix}\\ \\frac{\\mathrm{meter}}{\\mathrm{second}}$"
      ],
      "text/plain": [
       "array([14.62550768,  7.93776508]) <Unit('meter / second')>"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "init.V⃗"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here is the `System` for Phase 2.  We can turn off the spring force by setting `k=0`, so we don't have to write a new slope function."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>values</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>height</th>\n",
       "      <td>381 meter</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>g</th>\n",
       "      <td>9.8 meter / second ** 2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mass</th>\n",
       "      <td>75 kilogram</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>area</th>\n",
       "      <td>1 meter ** 2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>rho</th>\n",
       "      <td>1.2 kilogram / meter ** 3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>v_term</th>\n",
       "      <td>60.0 meter / second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>length</th>\n",
       "      <td>100 meter</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>angle</th>\n",
       "      <td>225 degree</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>k</th>\n",
       "      <td>0.0 newton / meter</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>t_0</th>\n",
       "      <td>8.999999999999991 second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>t_end</th>\n",
       "      <td>18.999999999999993 second</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>init</th>\n",
       "      <td>P⃗    [42.09220704823149 meter, 273.0520143333...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C_d</th>\n",
       "      <td>0.3402777777777778 dimensionless</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "height                                            381 meter\n",
       "g                                   9.8 meter / second ** 2\n",
       "mass                                            75 kilogram\n",
       "area                                           1 meter ** 2\n",
       "rho                               1.2 kilogram / meter ** 3\n",
       "v_term                                  60.0 meter / second\n",
       "length                                            100 meter\n",
       "angle                                            225 degree\n",
       "k                                        0.0 newton / meter\n",
       "t_0                                8.999999999999991 second\n",
       "t_end                             18.999999999999993 second\n",
       "init      P⃗    [42.09220704823149 meter, 273.0520143333...\n",
       "C_d                        0.3402777777777778 dimensionless\n",
       "dtype: object"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "system2 = System(system1, t_0=t_final, t_end=t_final+10*s, init=init, k=0*N/m)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here's an event function that stops the simulation when Spider-Man reaches the ground."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "def event_func(state, t, system):\n",
    "    \"\"\"Stops when y=0.\n",
    "    \n",
    "    state: State object\n",
    "    t: time\n",
    "    system: System object\n",
    "    \n",
    "    returns: height\n",
    "    \"\"\"\n",
    "    P⃗, V⃗ = state\n",
    "    return P⃗.y"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Run Phase 2."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "results2, details2 = run_ode_solver(system2, slope_func, events=event_func)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Plot the results."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_trajectory(results1.P⃗, label='Phase 1')\n",
    "plot_trajectory(results2.P⃗, label='Phase 2')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we can gather all that into a function that takes `t_release` and `V_0`, runs both phases, and returns the results."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "def run_two_phase(t_release, V⃗_0, params):\n",
    "    \"\"\"Run both phases.\n",
    "    \n",
    "    t_release: time when Spider-Man lets go of the webbing\n",
    "    V_0: initial velocity\n",
    "    \"\"\"\n",
    "    params1 = Params(params, t_end=t_release, V⃗_0=V⃗_0)\n",
    "    system1 = make_system(params1)\n",
    "    results1, details1 = run_ode_solver(system1, slope_func)\n",
    "\n",
    "    t_0 = get_last_label(results1) * s\n",
    "    t_end = t_0 + 10 * s\n",
    "    init = results1.last_row()\n",
    "\n",
    "    system2 = System(system1, t_0=t_0, t_end=t_end, init=init, k=0*N/m)\n",
    "    results2, details2 = run_ode_solver(system2, slope_func, events=event_func)\n",
    "\n",
    "    results = results1.combine_first(results2)\n",
    "    return TimeFrame(results)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And here's a test run."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "143.42923899746137 meter"
      ],
      "text/latex": [
       "$143.42923899746137\\ \\mathrm{meter}$"
      ],
      "text/plain": [
       "143.42923899746137 <Unit('meter')>"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "t_release = 9 * s\n",
    "V⃗_0 = Vector(0, 0) * m/s\n",
    "\n",
    "results = run_two_phase(t_release, V⃗_0, params)\n",
    "plot_trajectory(results.P⃗)\n",
    "x_final = results.P⃗.last_value().x"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Animation\n",
    "\n",
    "Here's a draw function we can use to animate the results."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "xs = results.P⃗.extract('x')\n",
    "ys = results.P⃗.extract('y')\n",
    "\n",
    "def draw_func(state, t):\n",
    "    set_xlim(xs)\n",
    "    set_ylim(ys)\n",
    "    x, y = state.P⃗\n",
    "    plot(x, y, 'bo')\n",
    "    decorate(xlabel='x position (m)',\n",
    "             ylabel='y position (m)')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "animate(results, draw_func)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Maximizing range\n",
    "\n",
    "To find the best value of `t_release`, we need a function that takes possible values, runs the simulation, and returns the range."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def range_func(t_release, params):\n",
    "    \"\"\"Compute the final value of x.\n",
    "    \n",
    "    t_release: time to release web\n",
    "    params: Params object\n",
    "    \"\"\"\n",
    "    V_0 = Vector(0, 0) * m/s\n",
    "    results = run_two_phase(t_release, V_0, params)\n",
    "    x_final = results.P⃗.last_value().x\n",
    "    print(t_release, x_final)\n",
    "    return x_final"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can test it."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "range_func(9*s, params)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And run it for a few values."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "for t_release in linrange(3, 15, 3) * s:\n",
    "    range_func(t_release, params)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we can use `maximize_scalar` to find the optimum."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "bounds = [6, 12] * s\n",
    "res = maximize_golden(range_func, bounds, params)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Finally, we can run the simulation with the optimal value."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "best_time = res.x\n",
    "V⃗_0 = Vector(0, 0) * m/s\n",
    "results = run_two_phase(best_time, V⃗_0, params)\n",
    "plot_trajectory(results.P⃗)\n",
    "x_final = results.P⃗.last_value().x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
